iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0
AI/ ML & Data

使用 jq 處理資料系列 第 28

Day28: jq 的錯誤處理

  • 分享至 

  • xImage
  •  

昨天我們認識了 jq 的 module, module 的存在讓我們可以打包被重複使用的邏輯,像是程式庫(library)一樣,讓不同的程式去呼叫相同的函式。我們也修改了 main.jq ,只留最外層的架構,將大部分的邏輯提取成函式並存放於 data_processing.jq 這個 module 之中,讓 main.jq 變得簡潔。今天,我們來認識 jq 的錯誤處理。

對話中學習

師父:今天我們將深入探討 jq 的錯誤處理機制。讓我們從最基本的開始,逐步深入複雜的用法。

徒弟:好的,師父。我很期待學習如何優雅地處理錯誤。

1. error() 函式

jq 中的 error() 函式用於直接拋出錯誤。

error("some exception")

定義:error(message) 函式接受一個字串參數作為錯誤訊息,並終止執行程式。

用法:當遇到無法繼續處理的情況時,可以使用 error() 函式拋出錯誤並提供有意義的錯誤訊息。

https://ithelp.ithome.com.tw/upload/images/20241012/20078389kEejwVip6l.png

2. try 語法

try {一段表達式} 用於捕捉可能發生的錯誤,但不處理它們。

try error("some exception")

定義:try 後面跟著一個表達式,如果該表達式拋出錯誤,try 會捕捉錯誤並以 empty(空)作為捕捉到錯誤後預設的處理。

用法:當你想要嘗試執行可能會失敗的操作,但不需要特別處理錯誤時使用。

使用 try 語法之後,也就使用了錯誤捕捉機制,而不是直接拋出錯誤。錯誤被捕捉後,程式會繼續執行而不是終止。

https://ithelp.ithome.com.tw/upload/images/20241012/20078389Nb3DGr4Wbr.png

3. ?運算元

? 運算元是一種簡潔的錯誤處理方式,是 try {一段表達式} 的簡化版。

error("some exception")?

定義:? 運算元放在表達式後面,如果表達式拋出錯誤,它會以 empty(空)作為捕捉到錯誤後預設的處理。而不是拋出錯誤。

https://ithelp.ithome.com.tw/upload/images/20241012/20078389w8PJyp40lU.png

4. try-catch 結構

try-catch 結構提供了完整的錯誤捕捉和處理機制。

try error("some exception") catch .

定義:try 後面跟著可能拋出錯誤的表達式,catch 後面跟著處理錯誤的表達式。這邊的. 表示回傳捕捉到的錯誤物件。

用法:當你需要不只是捕捉錯誤,還要對錯誤進行特定處理時使用。

這是最完整的錯誤處理結構。與單純的 try? 運算元不同,它允許你自定義錯誤處理邏輯,而不是預設以 empty 作為捕捉到錯誤後的處理方式。

https://ithelp.ithome.com.tw/upload/images/20241012/200783896FFy88Okak.png

結論

今天我們認識了 jq 的錯誤處理的幾種方法,其中有提到了empty。empty 不回傳任何東西,連 null 也沒有喔! 直接是沒有輸出。我們明天再繼續將今天學到的內容,應用在我們現有的程式中吧。

感謝自己今天也認真的學習 😊


上一篇
Day27: jq module
下一篇
Day29: 應用錯誤處理
系列文
使用 jq 處理資料30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言